StarTropics music disassembly and bugfix.
Brad Smith
11/19/2014
http://rainwarrior.ca


This is a complete annotated disassembly of the music engine and data from StarTropics,
originally released by Nintendo in 1990.

I started this project because I noticed the broken accomaniment pattern in the
island map music (track 1), and I wanted to find out what went wrong with it. In the
process I discovered and fixed a broken bassline in another tune (track 30).


If you are interested in the music data format, or the music engine source code, 
you will find the details in: st_music.s

If you would like to see how the track was fixed, and for an annotated example of how to
understand and insert music data into StarTropics, see: stf_music.s


If you have questions or comments, you may contact me at: brad@rainwarrior.ca




Steps to create the disassembly from scratch:

1. Install python 3 if you do not have it. https://www.python.org/

2. Place a copy of cc65 in a folder in this directory called "cc65". http://cc65.github.io/cc65/

3. Place a ROM called "startropics.nes" in this directory,

4. Create a folder called "temp" in this directory.

5. Run "split.py" to create "temp/combo.bin" from the ROM.

6. Run "disassemble.bat" to create the raw disassembly: "st_music_raw2.s"

7. Clean up "st_music_raw2.s" by hand and save as "st_music.s"

8. Run "compile_st_nsf.bat" to create "temp/st_nsf.nsf"



Other files:

startropics_music_fix.ips
- IPS patch to fix the music in the NES ROM

stf_nsf.s
stf_music.s
compile_stf_nsf.bat
- creates NSF with "fixed" tracks 1 and 30

analyze_cdl.py
- displays information from a FCEUX code data log run on the NSF

st_nsf.cfg
- linker configuration file used by ld65 when building st_nsf.nsf

disassemble.py
- script for disassembly

fceux_symbols.py
- creates FCEUX debugging symbols when building st_nsf.nsf

orders.py
- creates a table of orders for use in disasm_info.txt

st_disasm_info.txt
- disassembly annotation file used for automated labelling during disassembly

apply_patch.py
- copies the patched NSF into the NES ROM



Brad Smith
11/19/2014
http://rainwarrior.ca
